// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraTaggedActor.h"
#include "UObject/UnrealType.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraTaggedActor)

ALyraTaggedActor::ALyraTaggedActor(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
}

void ALyraTaggedActor::GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const
{
	TagContainer.AppendTags(StaticGameplayTags);
}

#if WITH_EDITOR
bool ALyraTaggedActor::CanEditChange(const FProperty* InProperty) const
{
	// Prevent editing of the other tags property

	// 阻止其他标签属性编辑。

	/**
	 * Returns FName(TEXT("MemberName")), while statically verifying that the member exists in ClassName
	 * 
	 * GET_MEMBER_NAME_CHECKED: 返回FName(TEXT("MemberName"))，同时静态核实此成员是否存在这个ClassName类中。
	 */

	/**
	 * GetFName: 获取属性的FName名。
	 */

	 /** Array of tags that can be used for grouping and categorizing. */

	/** Tags: 能够被用于分组和分类的标签数组。 */

	// NOTE: 这里就是判断用户不允许编辑Tags属性。
	if (InProperty->GetFName() == GET_MEMBER_NAME_CHECKED(AActor, Tags))
	{
		return false;
	}

	return Super::CanEditChange(InProperty);
}
#endif

